Spring Boot: 1.5.10.RELEASE
Spring Cloud: Dalston.SR5
路由管理端点
Zuul 会暴露一个路由管理端点 /routes,借助这个端点,可以方便、直观地查看以及管理 Zuul 的路由。
使用 GET 请求访问该路由管理端点即可获取 Zuul 当前映射的路由列表。
使用 POST 请求访问该路由管理端点即可强制刷新 Zuul 当前映射的路由列表。
默认 SpringCloud 因为安全机制是不允许访问,需设置 management.security.enabled=false
默认路由规则
在上一篇 SpringCloud Zuul 请求路由中有演示配置路由规则,那么如果不配置路径规则会怎么样?会通过服务提供者的请求路径直接访问吗?
还是使用上一篇的例子,只是修改配置文件 appliation.yml 如下:
1 | spring: |
POST 请求路由管理端点:
1 | http://localhost:8888/routes |
结果:
1 | { |
而实际路径如下:
hello-world-service:9001 的 /hello URL
hello-world-service-provide:9004 的 /hello URL
hello-world-service-provide:9005 的 /hello URL
可以发现 Zuul 默认会帮我们配置一个路由规则:默认以服务名称作为path的请求前缀
调用如下URL:
http://localhost:8888/hello-world-service/hello
http://localhost:8888/hello-world-service-provide/hello
屏蔽路由
因为 Zuul 的默认路由规则存在,那么等于默认是开放了所有的服务路径。故若想有选择的开放路由,则需要利用zuul.ignored-service= /* 进行路由屏蔽然后再通过开放指定路由的方式。
修改配置文件 appliation.yml 如下:
1 | spring: |
POST 请求路由管理端点:
1 | http://localhost:8888/routes |
结果:
1 | {} |
修改配置文件 appliation.yml 如下:
1 | spring: |
POST 请求路由管理端点:
1 | http://localhost:8888/routes |
结果:
1 | { |
调用如下URL:
http://localhost:8888/hello-world-service/hello 可以正常访问
http://localhost:8888/hello-world-service-provide/hello 不可以正常访问